/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	HBCalendar.java
 * 模块说明：	
 * 修改历史：
 * Sep 22, 2007 - lxm - 创建。
 */
package com.hd123.rumba.jsp.table;

import com.hd123.rumba.jsp.HButtonCalendar;

/**
 * 提供表格单元格编辑器中使用的按钮，提供“日历”的功能。
 * 
 * @author lxm
 * 
 */
public class HBCalendar extends HButton {

  /**
   * 构造函数。
   * 
   * @param params
   *          其它参数数组。可用的参数说明参见相应的属性说明。
   */
  public HBCalendar(Object[] params) {
    super(params);
  }

  @Override
  public String getClassNameJS() {
    return "RTableEditor.BCalendar";
  }

  private HButtonCalendar.Style style;
  private String onReturnJS;

  /**
   * 属性：当操作者选择一个日期后返回时触发的事件。<br>
   * 对应参数名"onReturnJS"，下一个参数为取值，类型为String。<br>
   * 
   * <br>
   * 通常情况下这应该指向一个javascript的函数名，该函数将在事件发生时被触发。具体说明如下（以下说明为js语法）：<br>
   * 
   * <br>
   * <code>function (date, editor)</code><br>
   * 参数：
   * <dl>
   * <dd>Date date - 指定操作者选择的日期。
   * <dd>RTableEditor.Editor editor - 指定对应编辑器对象。
   * </dl>
   * 
   * <br>
   * <b>注意：</b>仅当对应的编辑器{@link #editor}不是{@link HEDate}时有效。
   */
  public String getOnReturnJS() {
    return onReturnJS;
  }

  public void setOnReturnJS(String onReturnJS) {
    this.onReturnJS = onReturnJS;
  }

  /**
   * 显示风格。默认为null，表示系统自动选择。<br>
   * 对应参数名"style"，下一个参数为取值，类型为{@link HButtonCalendar.Style}。<br>
   */
  public HButtonCalendar.Style getStyle() {
    return style;
  }

  public void setStyle(HButtonCalendar.Style style) {
    this.style = style;
  }

  @Override
  protected boolean readParam(String paramName, Object paramValue) {
    if ("onExecuteJS".equals(paramName))
      return false;
    if (super.readParam(paramName, paramValue))
      return true;
    if ("style".equals(paramName)) {
      this.style = (HButtonCalendar.Style) paramValue;
      return true;
    }
    if ("onReturnJS".equals(paramName)) {
      this.onReturnJS = (String) paramValue;
      return true;
    }
    return false;
  }
  
  @Override
  public String buildConfigJS() {
    StringBuffer sb = new StringBuffer();
    sb.append(super.buildConfigJS());
    if (this.style != null) {
      if (sb.length() > 0)
        sb.append(", ");
      sb.append("style: " + this.style.getValue());
    }
    if (this.onReturnJS != null && !"".equals(this.onReturnJS.trim())) {
      if (sb.length() > 0)
        sb.append(", ");
      sb.append("onReturn: " + this.onReturnJS);
    }
    return sb.toString();
  }
  
}
